package com.liu.qqRobot.event.entity.dto;

import cn.hutool.core.annotation.Alias;
import com.liu.common.entity.BaseEntity;
import lombok.Getter;
import lombok.Setter;

import java.util.List;

@Getter
@Setter
public class EventReportingDTO extends BaseEntity {

    /**
     * 机器人QQ号（接受到信息的QQ号）
     */
    @Alias("self_id")
    private Long selfId;

    /**
     * 发送人QQ号
     */
    @Alias("user_id")
    private Long userId;

    /**
     * 事件发生的unix时间戳
     */
    private Long time;

    /**
     * 消息 ID
     */
    @Alias("message_id")
    private Long messageId;

    @Alias("real_id")
    private Long realId;

    @Alias("message_seq")
    private Long messageSeq;

    /**
     * 消息类型 private-私聊消息 group-群消息
     */
    @Alias("message_type")
    private String messageType;

    /**
     * 发送人信息
     */
    private Sender sender;

    /**
     * 原始消息内容
     */
    @Alias("raw_message")
    private String rawMessage;

    /**
     * 字体
     */
    private Integer font;

    /**
     * 事件子类型 friend-好友 normal-群聊 anonymous-匿名 group_self-群中自身发送 group-群临时会话 notice-系统提示
     */
    @Alias("sub_type")
    private String subType;

    /**
     * 消息内容
     */
    private List<Message> message;

    @Alias("message_format")
    private String messageFormat;

    /**
     * 上报的类型
     */
    @Alias("post_type")
    private String postType;

    /**
     * 群号
     */
    @Alias("group_id")
    private Long groupId;

    /**
     * 添加好友传参
     */
    private String flag;

    @Alias("request_type")
    private String requestType;

    @Getter
    @Setter
    public static class Sender extends BaseEntity {

        /**
         * 临时会话群号
         */
        @Alias("group_id")
        private Long groupId;

        /**
         * QQ号
         */
        @Alias("user_id")
        private Long userId;

        /**
         * QQ昵称
         */
        private String nickname;

        /**
         * 群昵称
         */
        private String card;

        /**
         * 角色, owner admin member
         */
        private String role;
    }

    @Getter
    @Setter
    public static class Message extends BaseEntity {

        private Data data;

        /**
         * 消息类型 image-图片 text-文字
         */
        private String type;

        @Getter
        @Setter
        public static class Data extends BaseEntity {

            private String qq;

            private String text;

            private String data;

            /**
             * 图片地址
             */
            private String url;
        }

    }
}
